package chapter05

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"time"
)

func MiddleWare1(c *gin.Context) {
	start_time := time.Now()
	fmt.Println("这是自定义中间件1--start")
	c.Next() //多个中间件之间会形成一条中间件链，通过Next函数来对后面的中间件进行执行
	time_count := time.Since(start_time)
	fmt.Println(time_count)
	fmt.Println("这是自定义中间件1--end")
}

/*
这是自定义中间件1--start
这是自定义中间件2--start
这是自定义中间件3--start
这是自定义中间件3--end
这是自定义中间件2--end
这是自定义中间件1--end
*/

func MiddleWare2() gin.HandlerFunc {
	return func(c *gin.Context) {
		fmt.Println("这是自定义中间件2--start")
		/*if 3 < 4 {
			c.Abort() //c.Abort()方法的作用 终止调用整个链条  比如：token认证没通过，不能直接return返回，而是使用Abort来终止
		}*/
		time.Sleep(3)

		c.Next()
		fmt.Println("这是自定义中间件2--end")
	}
}

func MiddleWare3(c *gin.Context) {
	fmt.Println("这是自定义中间件3--start")
	time.Sleep(3)
	c.Next() //多个中间件之间会形成一条中间件链，通过Next函数来对后面的中间件进行执行
	fmt.Println("这是自定义中间件3--end")
}
